java ParseServer:不保存用户信息?
基本上,如果用户位于某个事件附近,我想将名为“pending”的属性更新为“yes”。我使用for循环遍历所有用户(此代码仅用于演示目的,没有那么多用户),并检查他们到指定事件的距离。如果是<;=7000,然后我想将“待定”更新为“是”但是,没有一个属性实际正在保存
我已经附上了我的全部代码,但是相关的代码片段出现在这条评论之后://****为居住在附近的用户提供通知***********
我知道的事情:
我放置的第一条log语句“numUsers”返回查询中有多少用户,以便我验证是否所有用户都被实际查询。它返回7,这是真的!这样就行了
在for循环中,它在每次迭代中成功地打印每个用户的用户名,因此我知道它在正确地迭代用户
最后,在u.SaveInBackground(…)它成功地打印出每个用户名,如果他们在我指定的距离内,则打印“是”,否则打印“空”
但是当我检查服务器时,这些信息实际上都没有存储? 在这个方法之外,如果我尝试获取任何用户的“pending”属性,它会告诉我它是null
我已经被困在这几个小时了
public void onButtonClickDecision(final View view) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("IncidentReports");
query.whereEqualTo("reference", intent.getStringExtra("reference"));
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(final List<ParseObject> objects, ParseException e) {
if (e == null) {
if (objects.size()>0) {
//if we clicked, decline -> update status to decline
if (view.getId() == R.id.decline) {
objects.get(0).put("status", "declined");
}
// if we clicked approve -> update status to approve
else if (view.getId() == R.id.approve) {
// update status
objects.get(0).put("status", "approved");
// ****** NOTIFICATIONS FOR USERS WHO LIVE IN THE NEIGHBOURHOOD ***********
ParseQuery<ParseUser> query3 = ParseUser.getQuery();
query3.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
Log.i("numUsers", Integer.toString(users.size()));
if ( e== null && users.size()>0) {
// COMPARE EACH USERS ADDRESS
for (final ParseUser u : users) {
Log.i("user name", u.getUsername());
String address = u.getString("address");
try {
// sets up users home as a Location
List<Address> list = geocoder.getFromLocationName(address, 1);
Address add = list.get(0);
Location home = new Location(LocationManager.GPS_PROVIDER);
home.setLatitude(add.getLatitude());
home.setLongitude(add.getLongitude());
// check if user is located in incident neighbourhood
if (home.distanceTo(incidentLoc) <= 7000) {
u.put("pending", "yes");
}
} catch (IOException ex) {
Log.i("ApprovedCheckingUsers", "failed");
System.out.println(ex.getMessage());
}
u.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
Log.i("Updated:", u.getUsername() + "," + u.getString("pending"));
}
});
}
}
}
});
}
// NOTIFY USER WHO POSTED
objects.get(0).put("notified", "false");
objects.get(0).put("reviewedby", ParseUser.getCurrentUser().getString("username"));
objects.get(0).saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
System.out.println("Saving status updates");
currentStatus.setText(objects.get(0).getString("status"));
Toast.makeText(ViewIndividualReport.this, "Status successfuly changed", Toast.LENGTH_SHORT).show();
} else {
System.out.println("Failed to save");
Toast.makeText(ViewIndividualReport.this, "Could not update status at this time. Try again later.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
});
}
共 (0) 个答案